package org.framework.edge.builder.application;

import org.framework.edge.builder.application.command.docker.build.module.*;
import org.framework.edge.builder.application.dto.DockerBuildModuleDTO;
import org.framework.edge.builder.domain.model.docker.builder.module.DockerBuildModule;
import org.wu.framework.lazy.orm.database.lambda.domain.LazyPage;
import org.wu.framework.web.response.Result;

import java.util.List;
/**
 * describe 打包模块 
 *
 * @author Jia wei Wu
 * @date 2024/08/13 07:39 晚上
 * @see org.wu.framework.lazy.orm.core.persistence.reverse.lazy.ddd.DefaultDDDLazyApplication 
 **/

public interface DockerBuildModuleApplication {


    /**
     * describe 新增打包模块
     *
     * @param dockerBuildModuleStoryCommand 新增打包模块     
     * @return {@link Result<DockerBuildModule>} 打包模块新增后领域对象     
     
     * @author Jia wei Wu
     * @date 2024/08/13 07:39 晚上
     **/

    Result<DockerBuildModule> story(DockerBuildModuleStoryCommand dockerBuildModuleStoryCommand);

    /**
     * describe 批量新增打包模块
     *
     * @param dockerBuildModuleStoryCommandList 批量新增打包模块     
     * @return {@link Result<List<DockerBuildModule>>} 打包模块新增后领域对象集合     
     
     * @author Jia wei Wu
     * @date 2024/08/13 07:39 晚上
     **/

    Result<List<DockerBuildModule>> batchStory(List<DockerBuildModuleStoryCommand> dockerBuildModuleStoryCommandList);

    /**
     * describe 更新打包模块
     *
     * @param dockerBuildModuleUpdateCommand 更新打包模块     
     * @return {@link Result<DockerBuildModule>} 打包模块领域对象     
     
     * @author Jia wei Wu
     * @date 2024/08/13 07:39 晚上
     **/

    Result<DockerBuildModule> updateOne(DockerBuildModuleUpdateCommand dockerBuildModuleUpdateCommand);

    /**
     * describe 查询单个打包模块
     *
     * @param dockerBuildModuleQueryOneCommand 查询单个打包模块     
     * @return {@link Result<DockerBuildModuleDTO>} 打包模块DTO对象     
     
     * @author Jia wei Wu
     * @date 2024/08/13 07:39 晚上
     **/

    Result<DockerBuildModuleDTO> findOne(DockerBuildModuleQueryOneCommand dockerBuildModuleQueryOneCommand);

    /**
     * describe 查询多个打包模块
     *
     * @param dockerBuildModuleQueryListCommand 查询多个打包模块     
     * @return {@link Result <List<DockerBuildModuleDTO>>} 打包模块DTO对象     
     
     * @author Jia wei Wu
     * @date 2024/08/13 07:39 晚上
     **/

    Result <List<DockerBuildModuleDTO>> findList(DockerBuildModuleQueryListCommand dockerBuildModuleQueryListCommand);

    /**
     * describe 分页查询多个打包模块
     *
     * @param dockerBuildModuleQueryListCommand 分页查询多个打包模块     
     * @return {@link Result <LazyPage<DockerBuildModuleDTO>>} 分页打包模块DTO对象     
     
     * @author Jia wei Wu
     * @date 2024/08/13 07:39 晚上
     **/

    Result <LazyPage<DockerBuildModuleDTO>> findPage(int size,int current,DockerBuildModuleQueryListCommand dockerBuildModuleQueryListCommand);

    /**
     * describe 删除打包模块
     *
     * @param dockerBuildModuleRemoveCommand 删除打包模块     
     * @return {@link Result<DockerBuildModule>} 打包模块     
     
     * @author Jia wei Wu
     * @date 2024/08/13 07:39 晚上
     **/

    Result<DockerBuildModule> remove(DockerBuildModuleRemoveCommand dockerBuildModuleRemoveCommand);

}